/**
 * 教师考勤校验模块
 */

const Joi = require('joi');
const { messages, validPage } = require('../validators/common');
const { AUDIT_STATUS } = require('../utils/CONST');

/**
 * 校验添加
 */
const validAdd = Joi.object({
    attendance_id: Joi.number().label('考勤类型').valid(33, 34, 35).required().messages(messages),
    steps: Joi.array().label('步骤').items(Joi.object({
        step: Joi.number().label('步骤').integer().min(1).required().messages(messages),
        teacher_id: Joi.number().label('教师ID').integer().min(1).required().messages(messages)
    })).required().min(1).messages(messages)
});

/**
 * 校验申请考勤
 */
const validApply = Joi.object({
    attendance_id: Joi.number().label('考勤类型').valid(33, 34, 35).required().messages(messages),
    from_date: Joi.date().label('开始时间').when('attendance_id', { is: Joi.valid(33, 34), then: Joi.date().required(), otherwise: Joi.date().allow(null) }).messages(messages),
    end_date: Joi.date().label('结束时间').when('attendance_id', { is: Joi.valid(33, 34), then: Joi.date().required(), otherwise: Joi.date().allow(null) }).messages(messages),
    message: Joi.string().label('消息').empty().max(300).required().messages(messages),
    from_course_id: Joi.number().label('我的课程').integer().min(1).when('attendance_id', { is: Joi.valid(35), then: Joi.number().required(), otherwise: Joi.number().allow(null) }).messages(messages),
    to_course_id: Joi.number().label('调换课程').integer().min(1).when('attendance_id', { is: Joi.valid(35), then: Joi.number().required(), otherwise: Joi.number().allow(null) }).messages(messages),
});

/**
 * 校验搜索
 */
const validSearch = Joi.object({
    attendance_id: Joi.number().label('考勤类型').valid(0, 33, 34, 35).required().messages(messages),
    status: Joi.number().label('状态').valid(0, AUDIT_STATUS.Pending, AUDIT_STATUS.Success, AUDIT_STATUS.Fail).required().messages(messages),
}).concat(validPage);

/**
 * 校验审批
 */
const validAudit = Joi.object({
    id: Joi.number().label('ID').integer().min(1).required().messages(messages),
    status_id: Joi.number().label('状态').valid(37, 38, 39, 40).required().messages(messages),
    message: Joi.string().label('审批信息').empty().max(200).required().messages(messages)
});

/**
 * 校验更新我的考勤
 */
const validUpdateMyAttendance = Joi.object({
    id: Joi.number().label('ID').integer().min(1).required().messages(messages),
    status_id: Joi.number().label('状态').valid(36, 41).required().messages(messages),
    message: Joi.string().label('消息').max(200).when('status_id', { is: Joi.valid(36), then: Joi.string().empty().required(), otherwise: Joi.string().allow(null, '') }).messages(messages)
});

module.exports = {
    validAdd,
    validAudit,
    validApply,
    validSearch,
    validUpdateMyAttendance
}